12-6. WWWプログラミング
(1) HTTP のプロトコル
* HTTP( HyperText Transfer Protocol ) の仕組み
詳しくは HTTP の RFC ドキュメントをどうぞといいたいが、 実際ちょっと見たぐらいで
理解できるものでない。いわば仕様書なので文字ばかりである。HTTP 1.0 の RFC につい
ては日本語訳も出ている。HTTP 1.0 では通信するのに GET, POST, HEAD という3つのメ
ソッドを定義している。GET と POST は超基本なので説明記事はよく見かける。HTTP 1.1
は97年1月に出た RFC 2068 がもとになっていて、PUT とか DELETE というメソッドを
追加したことになっている。Apache はバ−ジョン 1.2 から HTTP 1.1 に対応し、これら
PUT, DELETE, TRACE をサポ−トしたとある。 Netscape Enterprise Server は 3.0 から
HTTP 1.1 条件付きで対応し、PUT のみサポ−トしている。
下に telnet でWWWアクセスしたところを示す。WWWブラウザがやっているのと同じ
ことをシュミレ−トしているわけである。cgi-bin プログラムにアクセスする場合の GET
と POST を示している。ただファイルをとってくるような場合も GET で、POST より簡単
に使える。プログラム名の後に ? で区切って、 WWWサ−バに渡す引き数を記入してい
るだけである。GET, HEAD, POST などのメソッドを発行すると、WWWサ−バから結果が
かえってくる。成功なら 200 である。他 300 がコンテンツ移動、400 がクライアントの
エラ−、500 がサ−バのエラ−という具合である。実際はもっと細分化されていて403 が
Forbiddn というように種々ある。
% telnet localhost 80
GET /cgi-bin/test.cgi?name=v1&name2=v2 HTTP/1.0 << リタ−ン。
<< リタ−ン。
% telnet localhost 80
POST /cgi-bin/test.cgi HTTP/1.0
Content-Length:16 << リタ−ン。
<< リタ−ン。ここ1個空行を開けること、ポイントです。
name=v1&name2=v2 << リタ−ン。ここに送りたい内容を記述する。
[ URL と URI ]
両者だいぶ混乱しているようである。URL が http://www.tcp-ip.or.jp/~ikken/int.html
なら URI は /~ikken/int.html と解釈していいかと思う。 URI はWWWサ−バ上のリソ
−スを特定する。下記は PHP3 のパラメ−タで URI を出してみたところである。
URL : Uniform Resource Locator
URI : Universal Resource Identifier
/usr/local/apache/htdocs/put.php3 これを telnet で "GET /put.php3 HTTP/1.0" と
--------------------------------- アクセスすると、
|
|echo "$DOCUMENT_ROOT\n"; /usr/local/apache/htdocs
|echo "$REQUEST_URI\n"; /put.php3
|// copy("kero.doc","katou.doc");
|?> と出て来る。
* HTTP 1.1 の場合の注意
$ telnet indy2 8080
GET / HTTP/1.1 << リタ−ン。デフォルトで index.html をゲットしにいく。
HOST: indy2 << リタ−ン。またはIPアドレスを入れる。ここも入れること。
<< リタ−ン。
HTTP/1.1 200 OK
Date: Wed, 17 May 2000 07:39:26 GMT
Server: Apache/1.3.9 (Unix)
Last-Modified: Fri, 12 May 2000 07:24:23 GMT
ETag: "2aaa3-8b8-391bb1a7"
Accept-Ranges: bytes
Content-Length: 2232 << ファイルのバイト数が出ている。
Content-Type: text/html
|
しばらくして、5秒ぐらいでコネクションが切れる。
Connection closed by foreign host.
* PUT と DELETE について
HTTP でWWWサ−バにあるファイルのリストをとる。プロテクションを変更する。 消去
する。ファイル名を変更する。ファイルをアップロ−ドする。NFS の代わりに HTTP でや
れないものだろうか。HTTP 1.1 はサ−バにコンテンツを送る PUT、 それにファイル消去
の DELETE をサポ−トしているとある。それなら telnet で、 とりあえず Apache 1.3.9
にアクセスして "DELETE /test.html HTTP/1.1" とかやったら消えるはずだ。それが消え
ない。DELETE 自体認識してないようだ。それなら PUT はどうだ。Netscape Composer か
ら HTML ファイルをアップロ−ドしてみる。これもできない。一体どうなっているのか?。
1) mode_put という Apache のモジュ−ルが PUT と DELETE をサポ−トする。デフォ
ルトでは Apache には入ってない。CERN にも同様 PUT プログラムがある。
2) POST メソッドでファイルを送り込む。PHP3 を使った例がある。そりゃ POST を使
えば標準入力から送り込める。今は PUT と言うメソッドがどうか知りたいのだ。
3) httpd.conf に Script PUT /cgi-bin/put.exe というように追加する。よく分から
なかった。意味がないのではないかと思う。
いろいろ検討の結果、mode_put の方法でファイルのアップロ−ドと消去ができた。 これ
だけでは NFS の代わりにはならない。プロテクションやファイル名の変更は cgi-bin 経
由ということになるか。あるいは PHP3 にはそのような関数もあるから、それでもいいか
も知れない。SSI( Server Side Include ) を使う手もある。
[ POST メソッドを使う ]
PHP3 のマニュアルの Chapter 15.Handling file uploads、"POST method uploads" に一
応やり方が書いてある。「UNIX MAGAZINE」'97/11、P.104 にも記事があった。 まとめる
とテキストでもバイナリでもいける、ファイルは相手先のテンポラリ・ディレクトリにで
きるということだ。こんなような記述。
ppp.php3
-------------------------------------------------------------------
|
|
|
|Send this file:
|
|
|?>
[ Script 宣言ではどうか ]
httpd.conf で "Script PUT /put.php3" とするところを PUT2 としてみた。Apache を起
動しようとすると、httpd.conf の構文がおかしい、Script 用の知らないメソッドあると
エラ−が出た。一応 PUT と DELETE というメソッドが、Apache 1.3.9 の HTTP 1.1 には
有るみたいだ。しかし、この Script の記述は変だ。何もこんな風にするならただの GET
で cgi-bin を使ってもいっしょじゃないか。何か意味があるのかな。
/usr/local/apache/cgi-bin/dell << 中身は何でも構わないということだよね。
------------------------------
|#!/bin/sh
|echo Content-type: text/plain
|echo
|echo $PATH_INFO
/usr/local/apache/conf/httpd.conf
---------------------------------------
|
|Script DELETE /cgi-bin/dell << PUT も入れたければ同様記述する。
| |
% telnet localhost 8080
DELETE /kero.doc HTTP/1.1 << HTTP 1.0 と書いてもOKだった。WWWサ−バか
host: indy2 らの応答は同じく HTTP/1.1 200 OK だった。
HTTP/1.1 200 OK
|
* Netscape Enterprise Server のFAQから抜粋 `2h/10/S 追記
かつて Shilicon Graphis のEWSに、この Netscape Enterprise Server のライセンス
を購入しWebサ−バとして動かしていた時がある。まだ Apache が出る前のことだった。
確かホ−ムペ−ジの cgi-bin に PHP を使いたいということで Apache に変えたのだった。
製品の概要
1. Netscape Enterprise Server とは?�
2. Netscape Enterprise Server を必要とするのは誰ですか?�
3. Enterprise Server 2.0 と Netscape Commerce Server の違いを説明してください。
4. Enterprise Server 2.0 と 3.0 の主な違いを教えてください。
5. Commerce Server から Enterprise Server にアップグレードする手段はありますか
6. Enterprise Server 3.0 の一般ユーザ向けの出荷時期を教えてください。�
7. Enterprise Server 2.0 から Enterprise Server 3.0 へのアップグレード方法を教
えてください。
8. Enterprise Server と FastTrack Server は、 どのような基準で選択すればよいで
しょうか?�
9. FastTrack 3.0 のリリース予定を教えてください。
WEB パブリシング機能
|
プログラミング機能
1. Enterprise Server での様々なプログラミング方法を説明してください。
2. Enterprise Server では、 どのようなアプリケーション開発環境がサポートされま
すか?�
3. LiveWireとは?
4. Enterprise Server 3.0 の新しいデータベース・アクセス機能を紹介してください。
5. Enterprise Serverでは、Visual Basic と Object Linking and Embedding(OLE) が
サポートされますか?�
6. Enterprise ServerではOpen Database Connectivity(ODBC)がサポートされますか?�
7. Netscape Internet Service Broker(NISB) とは?
8. Internet Inter-ORB Protocol(IIOP) とは?
9. Visigenics VisiBroker と Internet Service Broker の違いを説明してください。
10. Enterprise Server 2.0用に作成したNSAPIアプリケーションは、Enterprise Server
3.0のもとで実行できますか?
プログラミング機能
Enterprise Server での様々なプログラミング方法を説明してください。
Enterprise Server 3.0 は、 次のような様々な機能を使用して拡張またはプログラ
ミングすることができます。
o サーバ側のJavaScript − 状態管理機能とデータベース・アクセス機能も利用可能
o サーバ側のJava − サーバ・プロセスの内部または外部で実行可能
o Web Application Interface − C、C++、Java、JavaScript とともに使用してサー
バの機能をカスタマイズすることが可能
o Internet Inter-ORB�Protocol(IIOP) − Netscape Internet Service Broker を通
じて登録されたローカル関数を呼び出すか、別のマシン上で動作しているリモート
・プロシージャを呼び出すことが可能
o Netscape Server Application Programming Interface(NSAPI) − C 言語とともに
使用して、サーバの機能を細かく調整することが可能
o C、C++、Java、Perl、Tcl/Tk、各種シェル・スクリプト言語のホストなどの様々な
言語で書かれたCommon�Gateway Interface(CGI)プログラム
o サーバ解析HTMLによるコマンド行(シェル)プログラムの実行
o WinCGIによるVisual BasicモジュールやOLEコンポーネントとの結合(Windowsのみ)
(2) HTTP でファイルのアップロ−ド
* Apache に mod_put モジュ−ルを追加する
Apache の標準モジュ−ルの中には、この mod_put モジュ−ルは入ってない。次のとこに
行って mod_put.tar.gz を取ってくる。展開するとカレントディレクトリに mod_put-1.3
というディレクトリができて、mod_put.c と mod_put.html というファイルができる。先
ずmod_put.html を見てみる。大きなセキュリティホ−ルができる可能性があるので、 注
意されたしといった英文が読める。 この mod_put.c モジュ−ルは Apache 1.2.x、1.3.x
に対応していることも読める。Apache は5章で DSO 対応、それに PHP3 + PostgreSQL +
XML を加えた。更に mod_put.c モジュ−ルを追加することにする。
http://hpwww.ec-lyon.fr/~vincent/apache/mod_put.html
% cd /usr/local/source/apache_1.3.9
% ./configure --enable-module=so --enable-module=proxy --add-module=mod_put.c
% make
% make install
ちゃんと追加されたか /usr/local/apache/bin/httpd -l で、mod_put.c が最後に加わっ
ているか確認しておく。 make install の際 /usr/local/apache/conf に httpd.conf が
あると上書きされない。しかしあらたにできる httpd.conf は特に変わりがないので、前
のを使ってもよさそうである。
/usr/local/apache/conf/httpd.conf PHP3 + PostgreSQL + XML で
------------------------------------------ 追加したようなところも示す。
| |
|LoadFile /usr/local/pgsql/lib/libpq.so
|LoadModule php3_module libexec/libphp3.so
|Port 8080
|User katou
|Group user
| |
|
| Options Indexes FollowSymLinks << Indexes は index.html など頭のファイルが
| AllowOverride None ない場合、そのディレクトリを一覧表示する。
| Order allow,deny
| Allow from all
| EnablePut On << この2つ追加
| EnableDelete On << すること。
|
| AuthType Basic \
| AuthName "Web publishing" |こんなようにしてアクセスできるユ−ザを制限す
| AuthUserFile /www/etc/passwd |べしと mod_put.html には書いてあった。
| AuthGroupFile /www/etc/group |
| |アップロ−ドしたファイルのモ−ドは、umask で
| require valid-user |指定できるようだ。デフォルトは 007 である。
| /
|
| |
|AddType application/x-httpd-php3 .php3
|AddType application/x-httpd-php3-source .phps
|AddType application/x-tar .tgz
|AddType text/html .shtml << この2つ SSI 用のファイル拡張子。こんなん
|AddHandler server-parsed .shtml << を実行する。 | -----------------
| -------------------------------- | | ファイルの | 送信 |
|開く:| http://192.9.10.1:443/dav |▼| | アイコンを | 切り取り |
| -------------------------------- | 右クリック | コピ− |
| | した画面 | ショ−トカット|
| 〆 Webフォルダとして開く | | 削除 |
| | | 名前の変更 |
| [OK] [キャンセル] [参照] | | プロパティ |
----------------------------------------- -----------------
Windows の画面に出ているアイコンの "マイコンピュ−タ" に "Web フォルダ" ができて
いた。"ネットワ−クコンピュ−タ" にも "192.9.10.1 上の dav" とできていた。これら
クリックすると、上の IE ででてきた画面と同じだった。 もう一つ "マイコンピュ−タ"
画面を出し、ファイルを dav にドラッグしたらコピ−もできた。しかし、WebDAV ディレ
クトリの中でファイルのコピ−/貼り付けはできなかった。
* Apache 以外の WebDAV 実装
市販のグル−プウェアのソフトにも WebDAV 機能が入っているのがある。日立のGroupmax、
Microsoft の SharePoint もそう。サイボウズはどうも WebDAV 機能はなく独自の方式ら
しい。desknet's も独自なのではないか。 WebDAV は当初なかなか使いものにならなかっ
たのでないか。それで独自にファイルをアップロ−ドする機構を作って、そのまま使われ
ているのでないか。blog と Wiki もファイルをアップロ−ドするのは cgi-bin を使うと
か、独自なものらしい。いや初めて WebDAV をテストしてみた2002年当時の Windows
OSではそこそこ使えたような記憶がある。多分その頃はまるで知られていなかったこと
と、やはり Windows のファイル共有の方が簡単であること、それで WebDAVは広まること
が無かったのでないか。その後 Windows XP Professional がでてきて、 長くパソコンの
デファクト・スタンダ−ドOSになっていったのだが、 このOSは Apache WebDAV に対
して全く順応してなかった。混乱をもたらすだけのものだった。`2a/03 追記。
* 参考
「UNIX MAGAZINE」 2002/03, P.128〜133, "UNIX便利帖 WebDAV", Apache ヘの組込み。
> 2002/04, P.103〜108, "WebDAVクライアント", cadaver と DAV Explorer 使い方など。
「Software Design」 2001/12, P.103〜123, "WebDAV を使いこなす"。
> http://www.atmarkit.co.jp/ の記事とほぼ同じ。筆者も同じ。
http://webdav.todo.gr.jp/ WebDAV Resources JP
> http://www.webdav.org/ の日本の公式サイトというべきところ。
「NETWORK MAGAZINE」2003/11, P.180〜183, Microsoft のフリ−メ−ルサ−ビス Hotmail
が、Outlook や Outlook Express で送受信できるのは WebDAV と XML を使っているから。
------------------------------------------------------------------------------------
[ 付録 ] Apollo での Mosaic のコンパイル&リンク 1995/04/13
● libdtm ライブラリ
これは特別にサポ−トする場合に必要である。DTM,HDM て何なのかな?。
$ fpat ?*.c -p malloc.h -lm
File: dtm.c, dtminit.c, dtmnserv.c
$ cc dtm
arch.h: 325: Unable to find include file 'sys/limits.h'.
/*# include */
↓
# include 変更した。
/bin/make sun でやったらOK。
● libwww2 ライブラリ
cc HTAccess.c -def L10N MOTIF XMOSAIC
cc HTAlert.c -def L10N MOTIF XMOSAIC
cc HTAnchor.c -def L10N MOTIF XMOSAIC
cc HTAtom.c -def L10N MOTIF XMOSAIC
cc HTSort.c -def L10N MOTIF XMOSAIC
cc HTChunk.c -def L10N MOTIF XMOSAIC
cc HTFTP.c -def L10N MOTIF XMOSAIC
cc HTFWriter.c -def L10N MOTIF XMOSAIC
cc HTFile.c -def L10N MOTIF XMOSAIC
cc HTFormat.c -def L10N MOTIF XMOSAIC
cc HTGopher.c -def L10N MOTIF XMOSAIC
cc HTInit.c -def L10N MOTIF XMOSAIC
cc HTList.c -def L10N MOTIF XMOSAIC
cc HTMIME.c -def L10N MOTIF XMOSAIC
cc HTML.c -def L10N MOTIF XMOSAIC
cc HTMLDTD.c -def L10N MOTIF XMOSAIC
cc HTMLGen.c -def L10N MOTIF XMOSAIC
cc HTNews.c -def L10N MOTIF XMOSAIC
cc HTParse.c -def L10N MOTIF XMOSAIC
cc HTPlain.c -def L10N MOTIF XMOSAIC
cc HTMosaicHTML.c -def L10N MOTIF XMOSAIC
cc HTString.c -def L10N MOTIF XMOSAIC
cc HTTCP.c -def L10N MOTIF XMOSAIC
cc HTTP.c -def L10N MOTIF XMOSAIC
cc HTTelnet.c -def L10N MOTIF XMOSAIC
cc HTWSRC.c -def L10N MOTIF XMOSAIC
cc HTWriter.c -def L10N MOTIF XMOSAIC
cc SGML.c -def L10N MOTIF XMOSAIC
cc HTIcon.c -def L10N MOTIF XMOSAIC
cc HTCompressed.c -def L10N MOTIF XMOSAIC
cc HTAAUtil.c -def L10N MOTIF XMOSAIC
cc HTAssoc.c -def L10N MOTIF XMOSAIC
cc HTUU.c -def L10N MOTIF XMOSAIC
cc HTAABrow.c -def L10N MOTIF XMOSAIC
lbr -c Alibwww.a HTAccess.bin HTAlert.bin HTAnchor.bin HTAtom.bin HTSort.bin
HTChunk.bin HTFTP.bin HTFWriter.bin HTFile.bin HTFormat.bin HTGopher.bin
HTInit.bin HTList.bin HTMIME.bin HTML.bin HTMLDTD.bin HTMLGen.bin
HTNews.bin HTParse.bin HTPlain.bin HTMosaicHTML.bin HTString.bin
HTTCP.bin HTTP.bin HTTelnet.bin HTWSRC.bin HTWriter.bin SGML.bin
HTIcon.bin HTCompressed.bin HTAAUtil.bin HTAssoc.bin HTUU.bin HTAABrow.bin
● libXmx ライブラリ
cc Xmx.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2
cc Xmx2.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2
lbr -c AlibXmx.a Xmx.bin Xmx2.bin
● libhtmlw ライブラリ
* ル−トの make でコンパイルした状況
cd libhtmlw; make CC=cc RANLIB=/bin/true CFLAGS="-g -DL10N -I/usr/X11/include
-I/usr/X11/include/Xm -DMOTIF -DXMOSAIC"
cc -g -DL10N -I/usr/X11/include -I/usr/X11/include/Xm -DMOTIF -DXMOSAIC -c HTML.c
******** Line 833 of "HTML.c": [Warning #080] Illegal pointer combination with "?":
* malloc.h インクル−ドをコメントにした
HTML-PSformat.c
* Apollo コンパイル
cc HTML.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 -inlib /lib/xmulib.r5
cc HTMLlists.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2
cc HTMLformat.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2
cc HTMLparse.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2
cc HTMLimages.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2
cc HTMLwidgets.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2
cc HTML-PSformat.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2
cc DrawingArea.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2
cc HTMLjot.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2
lbr -c Alibhtmlw.a HTML.bin HTMLlists.bin HTMLformat.bin HTMLparse.bin
HTMLimages.bin HTMLwidgets.bin HTML-PSformat.bin DrawingArea.bin HTMLjot.bin
● src のところ
* ル−トの make でコンパイルした状況
cd src; make CC=cc RANLIB=/bin/true CFLAGS=" -DL10N -I/usr/X11/include
-I/usr/X11/include/Xm -I.. -I../libXmx -I../libwww2" AUX_CFLAGS=
X_LIBS="-L/usr/X11/lib -lXm -lXmu -lXt -lX11" SYS_LIBS=" " DTM_LIBS=""
HDF_LIBS="" WAIS_LIBS="" LIBWWW_DIR=../libwww2
cc -DL10N -I/usr/X11/include -I/usr/X11/include/Xm -I.. -I../libXmx -I../libwww2 -c main.c
cc -o Mosaic main.o gui.o gui-dialogs.o gui-menubar.o
gui-documents.o mo-www.o mo-dtm.o hotlist.o whine.o
history.o annotate.o pan.o grpan.o grpan-www.o audan.o
globalhist.o img.o picread.o xpmhash.o xpmread.o
gifread.o pixmaps.o medcut.o mo-hdf.o hdf-browse.o
../libwww2/libwww.a
../libhtmlw/libhtmlw.a
../libXmx/libXmx.a
-L/usr/X11/lib -lXm -lXmu -lXt -lX11
Welcome to NCSA Mosaic.
* Apollo コンパイル
cc main.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc gui.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 -inlib /lib/xmulib.r5
cc gui-dialogs.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc gui-menubar.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc gui-documents.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc mo-www.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc mo-dtm.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc hotlist.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc whine.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc history.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc annotate.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc pan.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc grpan.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc grpan-www.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc audan.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc globalhist.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc img.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc picread.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc xpmhash.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc xpmread.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc gifread.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc pixmaps.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc medcut.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc mo-hdf.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
cc hdf-browse.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2
lbr -c Asrc.a main.bin gui.bin gui-dialogs.bin gui-menubar.bin gui-documents.bin
mo-www.bin mo-dtm.bin hotlist.bin whine.bin history.bin annotate.bin
pan.bin grpan.bin grpan-www.bin audan.bin globalhist.bin img.bin
picread.bin xpmhash.bin xpmread.bin gifread.bin pixmaps.bin medcut.bin
mo-hdf.bin hdf-browse.bin
● src でバインドする
* 結果
$ bind Asrc.a ../libwww2/Alibwww.a ../libhtmlw/Alibhtmlw.a ../libXmx/AlibXmx.a -b mosaic
file coff 1028528 mosaic ができた。
$ bind Asrc.a ../libwww2/Alibwww.a ../libhtmlw/Alibhtmlw.a ../libXmx/AlibXmx.a -b mosaic -merge
file coff 1026733 mosaic ができた。
* Mosaic の make でコンパイル&リンクした場合
file coff 3323257 Mosaic ができた。
● 日本語フォントを使えるようにする
* Apollo のフォントのありか
/usr/X11/lib/fonts/100dpi/fonts.dir
/usr/X11/lib/fonts/75dpi/fonts.dir
/usr/X11/lib/fonts/hp_roman8/75dpi/fonts.dir
/usr/X11/lib/fonts/iso_8859.1/100dpi/fonts.dir
/usr/X11/lib/fonts/iso_8859.1/75dpi/fonts.dir
/usr/X11/lib/fonts/hp_kana8/fonts.dir
/usr/apollo/japan/X11/fonts/fonts.dir
/usr/X11/examples/motif/fonts/fonts.dir
/usr/X11/lib/fonts/misc/fonts.dir
/usr/X11/lib/fonts/misc/fonts.alias
/usr/X11/bin
* 日本語フォントを使えるようにする 1995/04/11
/usr/X11/lib/fonts/misc/fonts.dir の修正
---------------------------------------
|276 << 元 274
|
| << この2つ追加
|kf16.snf -jis-fixed-medium-r-normal--16-150-75-75-c-160-jisx0208.1983-0
|kf24.snf -jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-0
/usr/apollo/japan/X11/fonts/kf16.snf, kf24.snf を
/usr/X11/lib/fonts/misc/ にコピ−する。
/usr/X11/lib/fonts/misc/fonts.alias これは変更なし
-----------------------------------------------------
|kanji16 -jis-fixed-medium-r-normal--16-*-*-*-*-*-jisx0208.1983-0
|kanji24 -jis-fixed-medium-r-normal--24-*-*-*-*-*-jisx0208.1983-0
|-jis-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1983-0 -jis-fixed-
| medium-r-normal--16-150-75-75-c-160-jisx0208.1983-0
|-jis-fixed-medium-r-normal--24-170-100-100-c-240-jisx0208.1983-0 -jis-fixed-
| medium-r-normal--24-230-75-75-c-240-jisx0208.1983-0
|A B << フォントAを指定したらBを使うよということ。
* Apollo で使える日本語フォント
/usr/X11/lib/fonts/misc/fonts.dir
ok k14.snf.Z -misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0
7x14rk.snf.Z -misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0
8x16rk.snf.Z -sony-fixed-medium-r-normal--16-120-100-100-c-80-jisx0201.1976-0
12x24rk.snf.Z -sony-fixed-medium-r-normal--24-170-100-100-c-120-jisx0201.1976-0
/usr/X11/examples/motif/fonts/fonts.dir
(日本語全部、EUCコ−ド)
ng k14-1.snf -k14-screen-medium-r-normal--14-140-75-75-m-140-jisx0208.1983-1
(数字とアルファベットのみ)
hbr8x13.snf -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-8
(数字とアルファベットとカタカナのみ)
rkana14.snf -romankana14-screen-medium-r-normal--14-140-75-75-m-70-jisx0201.1976-0
/usr/X11/lib/fonts/hp_kana8/fonts.dir
kana.10x18.snf.Z kana.10x18 カタカナが入っている
kana.10x20.snf.Z kana.10x20
kana.12x24.snf.Z kana.12x24
kana.8x16.snf.Z kana.8x16
kana.8x18.snf.Z kana.8x18
/usr/apollo/japan/X11/fonts/fonts.dir
af12.snf af12 数字とアルファベットのみ
af16.snf af16 数字とアルファベットのみ
af24.snf af24 数字とアルファベットのみ
ok kf12.snf kf12 日本語全部 JISコ−ド
ok kf16.snf kf16 日本語全部 JISコ−ド
ok kf24.snf kf24 日本語全部 JISコ−ド
● フォントの作成と変換
* Apollo の X-Window のフォントの注意
DM と X-Window リリ−ス5を両方同時に使う場合の設定では、フォントの xxx.snf がな
いとダメである。リリ−ス5では、本当は xxx.pcf を使うが Apollo は特殊である。
ただし mkfontdir では xxx.pcf を見てフォント情報を作成するので、 xlsfonts では使
えるとでても、xfd -fn xxx で実際に表示しようとすると出てこないといった事態になる。
* xlsfonts リストにはあるが、使えないフォント
7x14bold -misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1
* フォントのフォ−マット
BDF Bitmap Distribution Format
PCF Portable Compiled Format
* $ stmkfont
stmkfont - font compiler to create X and PCL fonts
-b string Specifies BDF-to-SNF converter command line arguments.
-B progname Specifies alternate BDF-to-SNF converter (not 'bdftosnf').
* % bdftopcf -o myfont.pcf myfont.bdf Apollo にはないコマンド。
X5用のフォントに変換するツ−ル。
* $ bdftosnf Apollo にもある。
$ edfont /sys/dm/fonts/kanji16 ok edfont はXの BDF フォントを編集するコ
$ edfont /nissei/cad/katou/k14.bdf ok マンド。特別に DM の kanji16 なども編
集できる。
$ kedfont /sys/dm/fonts/kanji16 ng
$ edfont /sys/dm/fonts/kf16 ng
$ kedfont /sys/dm/fonts/kf16 ok
* フォントの圧縮と解凍
$ /usr/ucb/uncompress file.tar.Z
$ /bin/tar xvf file.tar
● フォントの新規登録
$ wd /usr/apollo/japan/X11/fonts/
$ ld
af12.snf af16.snf af24.snf kf12.snf kf16.snf
$ xfd -fn kf16 エラ−ででない。fonts.dir がないとダメ!。
$ mkfontdir << fonts.dir を作成する。
$ ld
af12.snf af16.snf af24.snf kf12.snf kf16.snf fonts.dir
$ xset fp+ /usr/apollo/japan/X11/fonts/ << フォントパスを設定する。
$ xfd -fn kf16 << 文字の一覧が表示される。
● フォントの登録ユ−ティリティ
* xset fp+ /usr/X11/examples/motif/fonts
これで使えるフォントを追加することができる。現在有効なフォントをリストするには
xlsfonts コマンドがある。
/usr/X11/examples/motif/fonts/fonts.dir
-------------------------------------------------------------------
|3
|k14-1.snf -k14-screen-medium-r-normal--14-140-75-75-m-140-jisx0208.1983-1
|hbr8x13.snf -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-8
|rkana14.snf -romankana14-screen-medium-r-normal--14-140-75-75-m-70-jisx0201.1976-0
$ xlsfonts
-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1
-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1
-adobe-courier-bold-o-normal--14-140-75-75-m-90-iso8859-1
-adobe-courier-bold-o-normal--18-180-75-75-m-110-iso8859-1
| 追加されていることが分かる。
-romankana14-screen-medium-r-normal--14-140-75-75-m-70-jisx0201.1976-0
|
* $ xset q << フォントパスのデフォルトの設定。
|
Colors:
default colormap: 0x80065 BlackPixel: 0 WhitePixel: 7
Font Path:
/usr/X11/lib/fonts/misc/,/usr/X11/lib/fonts/75dpi/,/usr/X11/lib/fonts/100dpi/
$ xset +fp /usr/X11/lib/fonts/misc/ << フォントパスを登録する。
$ xset -fp /usr/X11/lib/fonts/misc/ << フォントパスを削除する。
$ xset fp default << フォントパスをデフォルトに戻す。
$ xset fp rehash << フォントパスを登録、 削除した場合はこのコ
マンドをやるように推奨されている。
* 参考で INDY でのフォント
alias > kanji16 --gothic-medium-r-normal--16-150-75-75-c-160-jisx0208.1983-0
実際のフォント Kg16.pcf.Z
alias > kanji24 --mincho-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-0
実際のフォント Km24.pcf.Z
フォントパスのデフォルトの設定 /usr/lib/X11/fonts/100dpi,75dpi,misc
* フォント情報の表示
$ showsnf -g /usr/X11/examples/motif/fonts/k14-1.snf
version1: 0x4 (version2: 0x4)
noOverlap constantMetrics terminalFont constantWidth inkInside inkMetrics
printing direction: left-to-right
first character: 0xa1
last characters: 0xfe
number of font properties: 0x7
COPYRIGHT Public domain font. Share and enjoy.
FONT -k14-screen-medium-r-normal--14-140-75-75-m-140-jisx0208.1983-1
POINT_SIZE 60
WEIGHT 25789
RESOLUTION 107
X_HEIGHT 12
QUAD_WIDTH 14
default character: 0xa1a1
font descent: 2
font ascent: 12
minbounds:
rbearing descent width exists
lbearing ascent byteOffset ciFlags
14 0 2 12 14 0x0 no 0x0
maxbounds:
rbearing descent width exists
lbearing ascent byteOffset ciFlags
14 0 2 12 14 0x2f02c no 0x0
ink minbounds:
rbearing descent width exists
lbearing ascent byteOffset ciFlags
0 0 -11 -1 14 0x0 no 0x0
ink maxbounds:
rbearing descent width exists
lbearing ascent byteOffset ciFlags
14 10 2 12 14 0x0 no 0x0
FontInfo struct: virtual memory address == 81000 size == 6c
CharInfo array: virtual memory base address == 8106c size == 1ed80
ink CharInfo array: virtual memory base address == cef34 size == 1ed80
glyph block: virtual memory address == 9fdec size == 2f02c
rbearing descent width exists
number lbearing ascent byteOffset ciFlags
161 14 0 2 12 14 0x0 yes 0x0
162 14 0 2 12 14 0x1c yes 0x0
163 14 0 2 12 14 0x38 yes 0x0
164 14 0 2 12 14 0x54 yes 0x0
165 14 0 2 12 14 0x70 yes 0x0
166 14 0 2 12 14 0x8c yes 0x0
|
* SR10.4.1 1999/10/20
$ ld //node_xxx/usr/X11/bin/
X Xapollo Xdomain atobm
bdftosnf bitmap bmtoa chfonts
dmtox dmwin fs hpterm
hpvue2 hpvue3 ico maze
mkfontdir mkfontdir.05.19 mkfontdir.05.19.1 mkfontdir.preR5
muncher mwm plaid puzzle
resize showsnf startx stconv
stlicense stload stmkdirs stmkfont
toxdomain uwm vuehelp x10tox11
x11start xauth xbiff xcalc
xclient xclipboard xclock xcmsdb
xcutsel xdpr xdpyinfo xedit
xev xeyes xfbs xfc
xfd xhost xinit xkill
xload xlogo xlsfonts xlswins
xmag xman xmh xmodmap
xownroot xpr xprop xrdb
xrefresh xsession xset xsetroot
xterm xwd xwininfo xwud
SR10.4.1 の xset を 10.4.0 にコピ−したらだめだった。xlsfonts はOK。
$ xset
?(pmlib/loader) Problem loading library "/lib/xmulib.r5" - name not found (OS/naming server)
?(sh) "xset" - unable to install a library required by object module (process manager/loader)
//node_xxx の 10.4.0 のオ−ソライズエリアに入っていた。
$ ld /install/ri.apollo.os.v.10.4/usr/X11/bin":
adjust atobm bdftosnf bitmap bmtoa
dmtox dmwin hpvue2 ico maze
mkfontdir muncher plaid puzzle resize
rgb showsnf startx stconv stlicense
stload stmkdirs stmkfont toxdomain uwm
vuefile vuehelp vuepad vuestyle vuewm
x10tox11 x11start xauth xbiff xcalc
xclient xclipboard xclock xcutsel xdpr
xdpyinfo xedit xev xeyes xfbs
xfd xhost xinit xkill xload
xlogo xlsfonts xlswins xmag xman
xmh xmodmap xownroot xpr xprop
xrdb xrefresh xsession xset xsetroot
xterm xwd xwininfo xwud